Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

SystemC: моделювання інтерфейсу на основі семафору (mutex).

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Проектування комп'ютерних систем та мереж
Група:
СКС-1

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи №5 на тему: „ SystemC: моделювання інтерфейсу на основі семафору (mutex).” Підготував: ст. гр. СКС-1 Львів 2007 Мета: Ознайомитись з поняттям каналів у SystemC на прикладі проекту «Mutex». Завдання: 1.Заванажити до середовища SystemC проект mutex та запустити його на виконання. 2.Ознайомитись з результатами та зробити висновки. Теоретичні відомості: SystemC має вбудовані механізми, відомі як канали, призначені для полегшення рутинної праці , інкапсулюючи засоби організації взаємозв’язку між паралельними процесами. SystemC має два типи каналів: базові та ієрархічні. Базовий канал sc_mutex У програмуванні mutex (mutual exclusion – взаємовиключення) - це об’єкт «семафор», який дозволяє багатьом програмам здійснювати потоковий спільний доступ до певного ресурсу, наприклад, до файлів, без колізій. У SystemC sc_mutex – це наперед визначений базовий канал, призначений для моделювання поведінки механізму синхронізації доступу паралельних процесів до спільних ресурсів. sc_mutex має власні наперед визначені методи: - int lock() – блокує семафор, якщо він є розблокований, в іншому випадку очікує факту розблокування; - int unlock()- розблоковує семафор; - int trylock() – перевіряє чи семафор є вільним; якщо так – блокує його, в іншому випадку повертає «-1». Прикладом використання семафору може бути керування спільною шиною. class bus { sc_mutex bus_access; void write(int addr, int data) { bus_access.lock(); // perform write bus_access.unlock(); } };//endclass Виконання лабораторної роботи: 1.Лістинг проекту: #include <systemc.h> SC_MODULE( mod_a ) { sc_mutex mutex; void write( const char* msg ) { cout << sc_simulation_time() << " " << msg << endl; } void proc_a() { while( true ) { wait( 1, SC_NS ); write( "proc_a - lock requested" ); mutex.lock(); write( "proc_a - lock obtained" ); wait( 2, SC_NS ); if( mutex.unlock() == 0 ) { write( "proc_a - unlock successful" ); } else { write( "proc_a - unlock failed" ); } wait( 3, SC_NS ); if( mutex.trylock() == 0 ) { write( "proc_a - trylock successful" ); } else { write( "proc_a - trylock failed" ); } if( mutex.unlock() == 0 ) { write( "proc_a - unlock successful" ); } else { write( "proc_a - unlock failed" ); } } } void proc_b() { while( true ) { wait( 2, SC_NS ); write( "proc_b - lock requested" ); mutex.lock(); write( "proc_b - lock obtained" ); wait( 4, SC_NS ); if( mutex.unlock() == 0 ) { write( "proc_b - unlock successful" ); } else { write( "proc_b - unlock failed" ); } wait( 3, SC_NS ); if( mutex.trylock() == 0 ) { write( "proc_b - trylock successful" ); } else { write( "proc_b - trylock failed" ); } if( mutex.unlock() == 0 ) { write( "proc_b - unlock successful" ); } else { write( "proc_b - unlock failed" ); } } } SC_CTOR( mod_a ) { SC_THREAD( proc_a ); SC_THREAD( proc_b ); } }; int sc_main( int, char*[] ) { mod_a a( "a" ); sc_start( 20, SC_NS ); return 0; } 2. Результати дослідження роботи проекту:  Висновок: На даній лабораторній роботі я ознайомився з поняттям каналів у SystemC на прикладі проекту «Mutex».
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини